package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public abstract class DAO {
    /*
     * Outra forma de registrar o Driver. static { try { //Registrando o driver
     * no DriveManager DriverManager.registerDriver(new
     * com.mysql.jdbc.Driver()); } catch (SQLException ex) {
     * Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex); } }
     */

    static {
        try {
            //Registrando o driver da forma mais utilizada
            // MySQL
            //Class.forName("com.mysql.jdbc.Driver");
            // JavaDB (Derby)
            Class.forName("org.postgresql.Driver");
            System.out.println("Conectando ao banco...");   
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
            ex.printStackTrace(System.err);
        }
    }

    public Connection getConnection(boolean autoCommit) {        
        //Conectando-se ao SGBD
        Connection conn = null;
        try {
            // MySQL
            //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "app", "12345");
            // JavaDB (Derby)
            conn = (Connection)DriverManager.getConnection("jdbc:postgresql://localhost/Mega","postgres", "123456");  
            conn.setAutoCommit(autoCommit);
            System.out.println("---------- ok -----------"); 
        } catch(SQLException ex) {
            Logger.getLogger(DAO.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace(System.err);
        }
        //Só queremos que a operação seja confirmada após darmos um commit na conexão
        return conn;
    }
}
